package com.bt.lms.ui.page.sys.major;

import com.bt.lms.entity.Major;
import com.bt.lms.entity.page.Page;
import com.bt.lms.ui.page.common.PageLocation;
import com.bt.lms.main.BotLmsApp;
import com.bt.lms.ui.page.sys.page.paging.PagePagingQuery;
import com.bt.lms.ui.page.sys.style.BtnStyle;
import com.bt.lms.ui.page.sys.utils.MyButton;
import com.bt.lms.ui.page.sys.utils.MyVBox;
import com.bt.lms.ui.vo.PageSkipInfo;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;

/**
 * 专业列表界面
 */
public class PageList extends VBox {

    /**
     * 界面跳转数据
     */
    private final PageSkipInfo pageSkipInfo;

    /**
     * 构建角色列表界面
     *
     * @param pageSkipInfo 此界面的一些数据（所在容器 + 所在容器中的角标）
     */
    public PageList(PageSkipInfo pageSkipInfo, Page<Major> page) {

        //自己可能用的东西
        this.setId("PageList");
        this.pageSkipInfo = pageSkipInfo;

        //大小
        this.setPrefWidth(BotLmsApp.PER_WIGHT);
        this.setPrefHeight(BotLmsApp.HEIGHT);

        //布局
        Insets insets = new Insets(0);
        this.setPadding(insets);

        //组件
        //定位区域
        PageLocation pageLocation = new PageLocation("系统管理", "学科/专业管理");
        this.getChildren().add(pageLocation);

        //列表区域
        MyVBox listVBox = new MyVBox();
        operateBtnInit(listVBox);
        MajorTableView majorTableView = new MajorTableView(listVBox, page, pageSkipInfo);
        listVBox.getChildren().add(majorTableView);
        this.getChildren().add(listVBox);

        //搜索区域
        PagePagingQuery<Major> majorPagePagingQuery = new PagePagingQuery<>(pageSkipInfo, page, Major.class);
        this.getChildren().add(majorPagePagingQuery);

    }

    /**
     * 列表区域的操作按钮初始化
     *
     * @param listVBox 列表盒子
     */
    private void operateBtnInit(MyVBox listVBox) {

        //组件(操作按钮)
        MyButton addRoleBtn = new MyButton("新增专业");
        //按钮内部布局
        Insets addUserBtnInsets = new Insets(5, 12, 5, 12);
        addRoleBtn.setPadding(addUserBtnInsets);
        //样式 + 样式事件
        BtnStyle.addBtn(addRoleBtn);
        BtnStyle.addBtnAction(addRoleBtn);
        //事件
        addRoleBtn.setOnAction(event -> {
            //界面跳转
            Pane pane = pageSkipInfo.getPane();
            Integer index = pageSkipInfo.getIndex();
            PageAdd pageAdd = new PageAdd(pageSkipInfo);
            pane.getChildren().set(index, pageAdd);
        });

        //操作按钮盒子（让操作按钮有间隔）
        HBox addUserBtnBox = new HBox();
        //操作按钮盒子布局
        Insets addUserBtnBoxInsets = new Insets(10);
        addUserBtnBox.setPadding(addUserBtnBoxInsets);
        //盒子内添加按钮
        addUserBtnBox.getChildren().add(addRoleBtn);
        //添加到列表容器
        ObservableList<Node> addUserChildren = listVBox.getChildren();
        addUserChildren.add(addUserBtnBox);
    }

}
